1. Field of the Invention
The present invention relates to the field of software development technologies and, more specifically, to a model driven development (MDD) software solution that includes an aspect integration tool.
2. Description of the Related Art
All modern software programming methodologies, including procedural programming and object-oriented programming methodologies, support some separation and encapsulation of concerns into single entities, where concerns represent any area of interest or focus. For example, procedures, packages, classes, and methods all help programmers encapsulate concerns into a single entity. Some concerns, referred to as cross-cutting concerns, defy these traditional forms of encapsulation by affecting (cross-cutting) multiple concerns. Aspect-oriented programming (AOP) is a software programming paradigm designed to handle cross-cutting concerns.
AOP is a relatively new technology, which is currently implemented by a variety of tools, the most common of which is AspectJ. Other tools used for implementing AOP include AspectWerkz, JBoss AOP, Spring AOP, AspectC++, and the like. All of these tools are designed to modularize cross-cutting concerns, such as authentication and transaction management. At the heart of each of the AOP tools is a join point model, which provides a means of identifying where the cross-cutting is happening.
At a minimum, a join point model defines conditions for AOP code to run in an execution environment, a means of specifying where in base code (the non-aspect part of a program) the AOP code is to run, and a means of specifying code to run at this specified point. Using AOP terminology, a join point is where the main program and the AOP code (or aspect) meet. A pointcut is a set of join points. Whenever the base code execution reaches one of the join points described in the pointcut, a piece of code associated with the pointcut, referred to as an advice, is executed. In AspectJ, an advice is able to run before, after, and around join points.
Currently, use of AOP principles requires a developer to learn semantics of an AOP language, a new style of programming, and to be knowledgeable about integrating that language with a coding structure in a base language. At present, this skill is a highly specialized one which few programmers possess. Further, early design decisions should be made to utilize non-intrusive AOP principles in lieu of traditional approaches to cross-cutting concerns, such as use of intrusive APIs or frameworks. Hence, an AOP knowledgeable designer needs to be involved early in a project and remain involved throughout the various project stages, else AOP required code can become a bottleneck impeding project progress.
What is needed is a software tool that enables software designers and developers who lack specialized knowledge of AOP languages and programming intricacies to implement AOP oriented designs and non-aspect code. Preferably, this tool will permit core business code to be designed and tested largely independent of aspect specific code so that software projects are not highly dependent upon an availability of programmers possessing specialized knowledge of AOP languages. No software tools adequate for this purpose are known to exist.